//
//  userAccount.swift
//  weibo
//
//  Created by 杨晨 on 16/3/11.
//  Copyright © 2016年 杨晨. All rights reserved.
//

import UIKit

private let userInforKey = "yang"

class userAccount: NSObject {
    
    //定义单例对象
    static let shareAccount = userAccount()
    
    var access_token: String?
    
    var expires_in: NSTimeInterval=0 {
        
        didSet {
            //计算过期日期
            expires_date = NSDate(timeIntervalSinceNow: expires_in)
        }
        
    }
    
    var uid: String?
    
    var name: String?
    //用户头像
    var avatar_large: String?
    //时间过期字段
     var expires_date: NSDate?
    
    //计算类型属性
    var userLogin: Bool {
        
        return access_token != nil
    }
    
 private  override init() {
        
        super.init()
        //加载用户信息
        self.loadUserInfo()
    }
    
    //好多属性没有实现,过滤不存在可以的方法
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        
    }
}
//账户的相关逻辑
//保存数据,获取数据

extension userAccount {
  
    func saveUserInfo(dic: [String : AnyObject]) {
        
//        print("+++=====================+++++")
//        print(dic)
//        print("+++=====================+++++r")

      
        self.setValuesForKeysWithDictionary(dic)
//
//       //保存当前对象的所有属性,已字典的形式
        let userDefault = NSUserDefaults.standardUserDefaults()
//
        let keys = ["access_token","expires_in","uid","name","avatar_large","expires_date"]
        let accountDict = self.dictionaryWithValuesForKeys(keys)
//        
        print("+++=====================+++++")
        print(accountDict)
        print("+++=====================+++++r")

        //将用户信息保存到沙盒中
        userDefault.setObject(accountDict, forKey: userInforKey)

        userDefault.synchronize()
        
        print(NSHomeDirectory())
    }
    //提供对外访问的方式
    func loadUserInfo() {
        //从偏好设置里面获取字典信
        guard let dic = NSUserDefaults.standardUserDefaults().objectForKey(userInforKey) as? [String : AnyObject] else {
            return
        }
        
        //将字典转换为模型
        self.setValuesForKeysWithDictionary(dic)
        
        //如果token不为空就表示登陆,如果为nil就表示没有登录
        
        if self.expires_date?.compare(NSDate()) == NSComparisonResult.OrderedDescending {
            //过期日期大于当期日期 没过期表示 ( 降序)
            print("token 正常")
            
        } else {
            
            self.access_token = nil
            print("用户token 已经过期")
        }
        
    }
    

}